﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//
//int Jump(int n)
//{
//	if (n == 1)
//		return 1;
//	else if (n == 2)
//		return 2;
//	else
//		return Jump(n - 1) + Jump(n - 2);
//	//为什么？当台阶只有一个时，青蛙只有一种跳法即一次跳一个台阶；当台阶有两个时，青蛙有两种跳法；当台阶为3时，青蛙最后一次
//	//的跳法可能是一阶也有可能是两阶；--> Jump(3)--> Jump(2) + Jump(1) --> 2+1 
//	//当台阶为4时，青蛙最后一跳--> 一阶或者两阶--> Jump(3)+Jump(2) --> Jump(1)+Jumo(2)+Jump(2) = 5
//}
//
//int main()
//{
//	//青蛙跳台阶 
//	//思考：青蛙一次能跳一个台阶或者两个台阶；如果有n 而过台阶，有多少种跳法？
//	//逆向思考，青蛙最后一次跳完，有两种情况，一是跳一个台阶，二是跳两个台阶；--> 利用递归
//	int n = 0;
//	scanf("%d", &n);
//	int ret = Jump(n);
//	printf("%d\n", ret);
//	return 0;
//}

// 使用库函数sqrt 实现1-1000素数的打印
//#include<stdio.h>
//#include<math.h>
//
//int main()
//{
//	//先产生1-1000的数
//	int i = 0;
//	int count = 0;
//	for (i = 2; i < 1000; i++)//此处可以优化，因为除了2，其他偶数不为素数
//	{
//		//再判断此数是不是素数;素数：只能被1以及本身整除
//		int j = 0;
//		int flag = 1;
//		for (j = 2; j <= sqrt((double)i); j++)
//		{
//			if (i % j == 0)
//				flag = 0;
//		}
//		if (flag)
//		{
//			printf("%d ", i);
//			count++;
//		}
//	}
//	printf("\n%d", count);
//
//	return 0;
//}

//void print()
//{
//	printf("***************\n");
//	printf("***************\n");
//	printf("***************\n");
//	return;
//	printf("***************\n");
//	printf("***************\n");
//
//}
//int Add(int x, int y)
//{
//	int z = 0;
//	z = x + y;
//	return z;
//}
//
//int main()
//{
//	//int a = 0;
//	//int b = 0;
//	//scanf("%d%d", &a, &b);
//	//int ret = Add(a, b);
//	//printf("%d\n", ret);
//
//	print();
//	return 0;
//}
//
//int test(int n)
//{
//	if (n < 0)
//		return 5.200;
//	else if (n = 0)
//		return 3.14;
//}
//int main()
//{
//	int ret = test(10);
//	printf("%d\n", ret);
//	return 0;
//}

//举例来体会嵌套调用（计算某年某月的天数）

//#include<stdio.h>
//#include<stdbool.h>

//int is_leap_year(int y)
//{
////	if ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) //判断此年是不是闰年
////		return 1;
////	else
////		return 0;
//return ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)); //因为逻辑操作符结果为真，返回值为1；结果为假，返回值为0；
//
//}
//当然此处也可以写作bool 类型

//bool is_leap_year(int y)
//{
//	return ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0));
//}
//
//int get_date_of_month(int y, int m)
//{
//	int d[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };//非常巧妙，将月份以数组下标的形式去访问得到此月的天数
//	int date = d[m];
//	if (is_leap_year(y) && m == 2)//将闰年的二月份单独拎出来
//		date++;
//
//	return date;
//}
//
//int main()
//{
//	int year = 0;
//	int month = 0;
//	scanf("%d%d", &year, &month);
//	int date=get_date_of_month(year,month);
//	printf("%d年%d月有%d天\n",year, month, date);
//	return 0;
//}

//链式访问的例子
//#include<stdio.h>
//#include<string.h>
//
//int main()
//{
//	printf("%zd\n", strlen("i love chongqing"));
//	return 0;
//}

//求n 的阶乘
//当n 为0时，其阶乘值为1;当n为2时，其阶乘为 2*(2-1);当n为3时，其阶乘为 3*(3-1)*(3-1-1)……
//#include<stdio.h>
//
//int Fact(int n)
//{
//	if (n == 0)
//		return 1;
//	else
//		return n*Fact(n - 1);
//	//限制条件为 n == 0; n- 1 确实也让每次递归越来越接近限制条件
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = Fact(n);
//	printf("n的阶乘为%d\n", ret);
//
//	return 0;
//}
//利用递归正序打印一个整数的每一位
#include<stdio.h>
//限制条件：当n /10 为0，便代表n没有十位了，此时就可以直接打印，不用继续递归；
void Print(int n)
{
	if (n / 10 != 0)
	{
		Print(n / 10);
		printf("%d ", n % 10);
	}
	else
		printf("%d ", n);
}

int main()
{
	int n =0;
	scanf("%d", &n);
	Print(n);
	return 0;
}
